public static void overlayProposition(Proposition self, Proposition overlayingprop) {
    self.kind = overlayingprop.kind;
    self.operator = overlayingprop.operator;
    { Proposition object000 = self;
      TruthValue value000 = ((TruthValue)(Stella_Object.accessInContext(overlayingprop.truthValue, overlayingprop.homeContext, false)));
      Stella_Object oldValue001 = object000.truthValue;
      Stella_Object newValue000 = Stella_Object.updateInContext(oldValue001, value000, object000.homeContext, false);

      if (!((oldValue001 != null) &&
          (oldValue001.primaryType() == Logic.SGT_STELLA_CS_VALUE))) {
        object000.truthValue = newValue000;
      }
    }
    KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_WEIGHT, FloatWrapper.wrapFloat(((FloatWrapper)(KeyValueList.dynamicSlotValue(overlayingprop.dynamicSlots, Logic.SYM_LOGIC_WEIGHT, Stella.NULL_FLOAT_WRAPPER))).wrapperValue), Stella.NULL_FLOAT_WRAPPER);
    KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_NEURAL_NETWORK, ((PropositionNeuralNetwork)(KeyValueList.dynamicSlotValue(overlayingprop.dynamicSlots, Logic.SYM_LOGIC_NEURAL_NETWORK, null))), null);
    self.arguments = overlayingprop.arguments.copy();
    if (((Vector)(KeyValueList.dynamicSlotValue(overlayingprop.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null))) != null) {
      KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, ((Vector)(KeyValueList.dynamicSlotValue(overlayingprop.dynamicSlots, Logic.SYM_LOGIC_IO_VARIABLES, null))).copy(), null);
    }
    if (BooleanWrapper.coerceWrappedBooleanToBoolean(overlayingprop.variableTypeP())) {
      KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_VARIABLE_TYPEp, Stella.TRUE_WRAPPER, null);
    }
    if (((BooleanWrapper)(KeyValueList.dynamicSlotValue(overlayingprop.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTIVEp, Stella.FALSE_WRAPPER))).wrapperValue) {
      KeyValueList.setDynamicSlotValue(self.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTIVEp, Stella.TRUE_WRAPPER, Stella.FALSE_WRAPPER);
    }
  }