static public function getDefinition($mosaic)
    {
        // read the mosaic's fully qualified name
        if ($mosaic instanceof Mosaic) {
            $fqn = $mosaic->getFQN();
        }
        elseif ($mosaic instanceof MosaicAttachment) {
            $fqn = $mosaic->mosaicId()->getFQN();
        }
        elseif (is_string($mosaic)) {
            $fqn = $mosaic;
        }
        else {
            throw new InvalidArgumentException("Unrecognized `mosaic` parameter to \\NEM\\Models\\Mosaics\\Registry::getDefinition().");
        }

        $preconfigClass = self::morphClass($fqn);
        if (false !== $preconfigClass && class_exists($preconfigClass)) {
            // Pre-Configured mosaic definition found
            return new $preconfigClass();
        }

        // no pre-configured mosaic definition class found, use NIS
        // Web service to read mosaic definition.

        return false;
    }