Evolutionary changes applied to a framework API may invalidate existing framework-based applications. While manually adapting applications is expensive and error-prone, automatic adaptation demands cumbersome specifications, which the developers are reluctant to write and maintain. Moreover, intrusive update of existing applications via modifying their implementations may be impossible at all, in case their sources or binaries are unavailable, or software licenses forbid their change. Instead of directly modifying dependent applications, we rely on adapters as unintrusive means for adaptation. Considering structural changes (so-called refactorings) of framework APIs, which can break existing applications, our adaptation technology supports binary backward-compatible framework upgrade - existing applications link and run with a new framework release without recompiling. The technology is rigorous defining precisely the structure and automatic derivation of compensating adapters. It is also practical compensating for most application-breaking API changes automatically, while requiring neither manual adaptation nor recompilation of existing application code.