public static boolean canBindAllP(Cons plObjects, Cons values) {
    { Stella_Object obj = null;
      Cons iter000 = plObjects;
      Stella_Object value = null;
      Cons iter001 = values;

      for (;(!(iter000 == Stella.NIL)) &&
                (!(iter001 == Stella.NIL)); iter000 = iter000.rest, iter001 = iter001.rest) {
        obj = iter000.value;
        value = iter001.value;
        { Surrogate testValue000 = Stella_Object.safePrimaryType(obj);

          if (Surrogate.subtypeOfP(testValue000, edu.isi.powerloom.extensions.units.Units.SGT_LOGIC_PATTERN_VARIABLE)) {
            { PatternVariable obj000 = ((PatternVariable)(obj));

              if (!(PatternVariable.bindVariableToValueP(obj000, value, true))) {
                return (false);
              }
            }
          }
          else if (Surrogate.subtypeOfP(testValue000, edu.isi.powerloom.extensions.units.Units.SGT_LOGIC_SKOLEM)) {
            { Skolem obj000 = ((Skolem)(obj));

              { Skolem object000 = obj000;
                Stella_Object value000 = value;
                Stella_Object oldValue000 = object000.variableValue;
                Stella_Object newValue000 = Stella_Object.updateInContext(oldValue000, value000, object000.homeContext, false);

                if (!((oldValue000 != null) &&
                    (oldValue000.primaryType() == edu.isi.powerloom.extensions.units.Units.SGT_STELLA_CS_VALUE))) {
                  object000.variableValue = newValue000;
                }
              }
            }
          }
          else {
            if (!(obj.objectEqlP(value))) {
              return (false);
            }
          }
        }
      }
    }
    return (true);
  }