public function __getSerialisablePropertyMap() {
        $propertyAccessors = $this->__findSerialisablePropertyAccessors();
        $propertyMap = array();
        foreach ($propertyAccessors as $accessorSet) {

            // If a get accessor exists, add it to the map
            if (isset ($accessorSet ["get"])) {
                $accessor = $accessorSet ["get"];
                if ($accessor instanceof \ReflectionMethod) {

                    // Check that this is not qualified with a @no-serialise tag
                    if (strpos($accessor->getDocComment(), "@no-serialise"))
                        continue;

                    $propertyName = substr($accessor->getName(), 3);
                    $propertyName = CodeUtils::instance()->normalisePropertyName($propertyName);
                    if ($accessor->isPublic())
                        $propertyMap [$propertyName] = $accessor->invoke($this);
                    else if ($accessor->isProtected()) {
                        $methodName = "get" . $propertyName;
                        $propertyMap [$propertyName] = $this->$methodName ();
                    }
                } else if ($accessor instanceof \ReflectionProperty) {

                    if (strpos($accessor->getDocComment(), "@no-serialise"))
                        continue;


                    $propertyName = $accessor->getName();
                    if ($accessor->isPublic())
                        $propertyMap [$propertyName] = $accessor->getValue($this);
                    else if ($accessor->isProtected()) {
                        $propertyName = $accessor->getName();
                        $propertyMap [$propertyName] = $this->$propertyName;
                    }
                }
            }

        }

        return $propertyMap;

    }