/** Validate that the wiring for a single pin is schema compatible */
void FGraphCompilerContext::ValidatePin(const UEdGraphPin* Pin) const
{
	if (!Pin || !Pin->GetOwningNodeUnchecked())
	{
		MessageLog.Error(
			*FString::Printf(
				*NSLOCTEXT("EdGraphCompiler", "PinWrongOuterError", "Blueprint is corrupted! Pin '%s' has wrong outer '%s'.").ToString(),
				Pin ? *Pin->GetName() : TEXT("UNKNOWN"),
				(Pin && Pin->GetOuter()) ? *Pin->GetOuter()->GetName() : TEXT("NULL")),
			Pin);
		return;
	}

	const int32 ErrorNum = MessageLog.NumErrors;

	// Validate the links to each connected pin
	for (int32 LinkIndex = 0; (LinkIndex < Pin->LinkedTo.Num()) && (ErrorNum == MessageLog.NumErrors); ++LinkIndex)
	{
		if (const UEdGraphPin* OtherPin = Pin->LinkedTo[LinkIndex])
		{
			ValidateLink(Pin, OtherPin);
		}
		else
		{
			MessageLog.Error(*NSLOCTEXT("EdGraphCompiler", "PinLinkIsNull Error", "Null or missing pin linked to @@").ToString(), Pin);
		}
	}
}
/** Validate that the wiring for a single pin is schema compatible */
void FGraphCompilerContext::ValidatePin(const UEdGraphPin* Pin) const
{
	// Validate the links to each connected pin
	for (int32 LinkIndex = 0; LinkIndex < Pin->LinkedTo.Num(); ++LinkIndex)
	{
		if (const UEdGraphPin* OtherPin = Pin->LinkedTo[LinkIndex])
		{
			ValidateLink(Pin, OtherPin);
		}
		else
		{
			MessageLog.Error(*NSLOCTEXT("EdGraphCompiler", "PinLinkIsNull Error", "Null or missing pin linked to @@").ToString(), Pin);
		}
	}
}