/// <summary>
        /// Initializes a new instance of the <see cref="AbstractMethodTemplate"/> parameterized template with the
        /// specified <paramref name="node"/> and <paramref name="parentType"/>.
        /// </summary>
        ///
        /// <param name="node">
        /// The <see cref="ParametrizedNode"/> representing the node for which templates are to be written.
        /// </param>
        ///
        /// <param name="parentType">
        /// The <see cref="TypeDeclaration"/> that contains <paramref name="node"/>.
        /// </param>
        protected AbstractMethodTemplate(ParametrizedNode node, TypeDeclaration parentType)
        {
            _method       = node;
            _parentType   = parentType;
            NeedsInstance = !_method.Modifier.HasFlag(Modifiers.Static);

            ReturnValue    = node.GetTypeReference(parentType);
            HasReturnValue =
                !(
                    ReturnValue.IsNull ||
                    "System.Void" == ReturnValue.Type ||
                    "void" == ReturnValue.Type
                    );
        }