private JMethod generateZclAttributeSetterSignature(JCodeModel jModel, JDefinedClass jClass, JClass jParentClass,
			ZclAttributeDescr zclAttributeDescriptor, boolean addContext) throws Exception {

		String setterName = attributeSetterName(zclAttributeDescriptor);
		String attributeTypeName = zclAttributeDescriptor.getTypeName();

		JMethod jMethodAttributeSetterSignature = jClass.method(JMod.PUBLIC, jModel.VOID, setterName);

		try {
			JType jType = jTypeForZbTypename(jModel, jParentClass._package(), attributeTypeName, zclAttributeDescriptor);
			jMethodAttributeSetterSignature.param(jType, zclAttributeDescriptor.getName());
		} catch (Exception e) {
			return jMethodAttributeSetterSignature;
		}

		if (addContext)
			jMethodAttributeSetterSignature.param(IEndPointRequestContext.class, "context");

		jMethodAttributeSetterSignature._throws(ApplianceException.class);
		jMethodAttributeSetterSignature._throws(ServiceClusterException.class);
		return jMethodAttributeSetterSignature;
	}