public static State Generate(
                AbstractImplementAbstractClassService service,
                Document document,
                SemanticModel model,
                SyntaxNode node,
                CancellationToken cancellationToken)
            {
                INamedTypeSymbol classType, abstractClassType;

                if (!service.TryInitializeState(document, model, node, cancellationToken,
                                                out classType, out abstractClassType))
                {
                    return(null);
                }

                if (!CodeGenerator.CanAdd(document.Project.Solution, classType, cancellationToken))
                {
                    return(null);
                }

                if (classType.IsAbstract)
                {
                    return(null);
                }

                var unimplementedMembers = classType.GetAllUnimplementedMembers(
                    SpecializedCollections.SingletonEnumerable(abstractClassType), cancellationToken);

                if (unimplementedMembers != null && unimplementedMembers.Count >= 1)
                {
                    return(new State(node, classType, abstractClassType, unimplementedMembers));
                }
                else
                {
                    return(null);
                }
            }
			public static State Generate(
				AbstractImplementAbstractClassService service,
				Document document,
				SemanticModel model,
				SyntaxNode node,
				CancellationToken cancellationToken)
			{
				INamedTypeSymbol classType, abstractClassType;
				if (!service.TryInitializeState(document, model, node, cancellationToken,
					out classType, out abstractClassType))
				{
					return null;
				}

				if (!CodeGenerator.CanAdd(document.Project.Solution, classType, cancellationToken))
				{
					return null;
				}

				if (classType.IsAbstract)
				{
					return null;
				}

				var unimplementedMembers = classType.GetAllUnimplementedMembers(
					SpecializedCollections.SingletonEnumerable(abstractClassType), cancellationToken);

				if (unimplementedMembers != null && unimplementedMembers.Count >= 1)
				{
					return new State(node, classType, abstractClassType, unimplementedMembers);
				}
				else
				{
					return null;
				}
			}