code: final protected FrameType modifyFrame(FrameType orig, @CheckForNull FrameType copy) {
          if (copy == null) {
              copy = createFact();
              copy.copyFrom(orig);
          }
          return copy;
      }
docs: <p>Create a modifiable copy of a frame. This is useful for meetInto(), if
  the frame needs to be modified in a path-sensitive fashion. A typical
  usage pattern is:
  </p>
  
  <pre>
  FrameType copy = null;
  if (someCondition()) {
  copy = modifyFrame(fact, copy);
  // modify copy
  }
  if (someOtherCondition()) {
  copy = modifyFrame(fact, copy);
  // modify copy
  }
  if (copy != null)
  fact = copy;
  mergeInto(fact, result);
  </pre>
  <p>
  The advantage of using modifyFrame() is that new code can be added before
  or after other places where the frame is modified, and the code will
  remain correct.</p>
  
  @param orig
  the original frame
  @param copy
  the modifiable copy (returned by a previous call to
  modifyFrame()), or null if this is the first time
  modifyFrame() is being called
  @return a modifiable copy of fact