public static Description finishBuildingDescription(Description description, boolean checkforduplicateP, Keyword kind) {
    { Proposition proposition = description.proposition;

      Proposition.normalizeProposition(proposition);
      if (proposition.kind == Logic.KWD_EXISTS) {
        proposition = ((Proposition)((proposition.arguments.theArray)[0]));
        description.proposition = proposition;
      }
      Logic.resolveUnresolvedSlotReferences(description);
      Proposition.updateSkolemTypeFromIsaAssertions(proposition);
      Proposition.normalizeDescriptiveProposition(proposition, description.ioVariables, kind);
      Proposition.recursivelyFastenDownPropositions(proposition, true);
      Description.computeInternalVariables(description);
      if (checkforduplicateP) {
        { Description duplicatedescription = Description.findDuplicateDescription(description);

          if (duplicatedescription != null) {
            description = duplicatedescription;
          }
        }
      }
      return (description);
    }
  }