public static void printVariableBindings(ControlFrame frame) {
    { PatternRecord patternrecord = ControlFrame.operativePatternRecord(frame);
      Description description = null;

      if (patternrecord != null) {
        if (frame.state == Logic.KWD_CONTAINED_BY) {
          { Proposition memberproposition = ((Proposition)((frame.proposition.arguments.theArray)[0]));
            Stella_Object member = (memberproposition.arguments.theArray)[0];

            { Surrogate testValue000 = Stella_Object.safePrimaryType(member);

              if (Surrogate.subtypeOfP(testValue000, Logic.SGT_LOGIC_PATTERN_VARIABLE)) {
                { PatternVariable member000 = ((PatternVariable)(member));

                  PatternVariable.printOneVariableBinding(member000);
                }
              }
              else if (Surrogate.subtypeOfP(testValue000, Logic.SGT_STELLA_LIST)) {
                { List member000 = ((List)(member));

                  { Stella_Object m = null;
                    Cons iter000 = member000.theConsList;

                    for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
                      m = iter000.value;
                      PatternVariable.printOneVariableBinding(((PatternVariable)(m)));
                    }
                  }
                }
              }
              else {
                { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

                  stream000.nativeStream.print("`" + testValue000 + "' is not a valid case option");
                  throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
                }
              }
            }
          }
          return;
        }
        description = patternrecord.optimalPattern;
        if (description != null) {
          { PatternVariable vbl = null;
            Vector vector000 = description.ioVariables;
            int index000 = 0;
            int length000 = vector000.length();

            for (;index000 < length000; index000 = index000 + 1) {
              vbl = ((PatternVariable)((vector000.theArray)[index000]));
              if ((patternrecord.variableBindings.theArray)[(vbl.boundToOffset)] != null) {
                PatternVariable.printOneVariableBinding(vbl);
              }
            }
          }
          { PatternVariable vbl = null;
            Vector vector001 = description.internalVariables;
            int index001 = 0;
            int length001 = vector001.length();

            for (;index001 < length001; index001 = index001 + 1) {
              vbl = ((PatternVariable)((vector001.theArray)[index001]));
              if ((patternrecord.variableBindings.theArray)[(vbl.boundToOffset)] != null) {
                PatternVariable.printOneVariableBinding(vbl);
              }
            }
          }
        }
      }
    }
  }