Setting EComponentCreationMethod::UserConstructionScript in OnConstruct crashes editor

Hello! Have this code that works fmosly fine:

void AGridManager::OnConstruction(const FTransform& Transform)
{
	Super::OnConstruction(Transform);

	GridPointsArray.Empty();

	if (TileBoundsSample == NULL) return;
	GridSurface = NewObject<UInstancedStaticMeshComponent>(this);

	GridSurface->CreationMethod = EComponentCreationMethod::UserConstructionScript;
	
	GridSurface->RegisterComponentWithWorld(GetWorld());
	GridSurface->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepRelativeTransform);
	AddOwnedComponent(GridSurface);

	GridSurface->SetStaticMesh(TileBoundsSample);
	GridSurface->SetVisibility(true);
	GridSurface->bHiddenInGame = true;
	GridSurface->SetCastShadow(false);
	GridSurface->SetCollisionObjectType(ECollisionChannel::ECC_GameTraceChannel1);
	GridSurface->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
	GridSurface->SetCollisionResponseToChannel(ECollisionChannel::ECC_GameTraceChannel1, ECollisionResponse::ECR_Block);
	GridSurface->SetMobility(EComponentMobility::Movable);
	
	FBox bounds = TileBoundsSample->GetBoundingBox();
	TileBounds_X = bounds.Max.X - bounds.Min.X;
	TileBounds_Y = bounds.Max.Y - bounds.Min.Y;
	int Z_Offset = bounds.Max.Z - bounds.Min.Z;	
	
	for (int i = 0; i < GridSize_X * GridSize_Y; i++)
	{
		//AddPointToArray
		FVector pos = VectorFromCellNum(i);
		GridPointsArray.Add(pos);
		//GenerateBasicTile
		GridSurface->AddInstance(FTransform(FRotator::ZeroRotator, pos - FVector(0, 0, Z_Offset)));
	}
}

GridSurface declared in .h file as:

UPROPERTY()
class UInstancedStaticMeshComponent* GridSurface;

As Ive already wrote, the code works fine most of the time. But if I drag this actor in editor and then hit “CTRL+Z”, the editor will crush with message:

[2016.06.09-02.12.39:504][919]LogWindows:Error:
=== Critical error: === Assertion failed: (Index >= 0) & (Index <
ArrayNum)
[File:D:\UnrealEngine\Engine\Source\Runtime\Core\Public\Containers\Array.h]
[Line: 804] Array index out of
bounds: 6 from an array of size 3

Some debuggind showed me that it happens at following line:

GridSurface->CreationMethod = EComponentCreationMethod::UserConstructionScript;

If I remove this line - everything begins to work fine except the old GridSurface is never removed so I end with a new component on each update.
Of caurse, I can clean this component by myself but maybe I am doing something wrong and there is another way of making it to work propertly? Or this is just a bug in 4.12(unfortunatelly can not make tests on earlier versions right now).

Thank you.