public static boolean argumentsUnifyWithArgumentsP(Proposition subproposition, Proposition referenceproposition) {
    { PatternRecord patternrecord = ((QueryIterator)(Logic.$QUERYITERATOR$.get())).currentPatternRecord;
      int ubstackoffset = patternrecord.topUnbindingStackOffset;
      boolean successP = false;

      { boolean testValue000 = false;

        { boolean alwaysP000 = true;

          { Stella_Object superarg = null;
            Vector vector000 = referenceproposition.arguments;
            int index000 = 0;
            int length000 = vector000.length();
            Stella_Object subarg = null;
            Vector vector001 = subproposition.arguments;
            int index001 = 0;
            int length001 = vector001.length();

            loop000 : for (;(index000 < length000) &&
                      (index001 < length001); index000 = index000 + 1, index001 = index001 + 1) {
              superarg = (vector000.theArray)[index000];
              subarg = (vector001.theArray)[index001];
              if (!((!Logic.nullInstanceP(subarg)) &&
                  Logic.bindArgumentToValueP(superarg, Logic.valueOf(subarg), false))) {
                alwaysP000 = false;
                break loop000;
              }
            }
          }
          testValue000 = alwaysP000;
        }
        if (testValue000) {
          testValue000 = referenceproposition.arguments.length() == subproposition.arguments.length();
        }
        successP = testValue000;
      }
      if (!successP) {
        PatternRecord.unbindVariablesBeginningAt(patternrecord, ubstackoffset + 1);
      }
      return (successP);
    }
  }