code: public void push(GraphicalModel model) {
              assert(!model.factors.contains(addedFactor));
              model.factors.add(addedFactor);
              model.getVariableMetaDataByReference(variable).put(CliqueTree.VARIABLE_OBSERVED_VALUE, ""+observation);
          }
docs: This applies this SampleState to the model. The name comes from an analogy to a stack. If we take a sample
  path, involving a number of steps through the model, we push() each SampleState onto the model one at a time,
  then when we return from the sample we can pop() each SampleState off the model, and be left with our
  original model state.
  
  @param model the model to push this SampleState onto