Stained Glass (puzzle)

Stained Glass is a binary determination logic puzzle published by Nikoli.

Rules
Stained Glass is played on a field of intersecting vertical, horizontal, and diagonal lines. At the intersections of some of these lines are small circles, either unshaded, grey shaded, or completely darkened.


 * An unshaded circle denotes that there are more unshaded shapes touching that circle than shaded shapes.
 * A grey shaded circle denotes that there are an equal number of shaded and unshaded shapes touching that circle.
 * A completely shaded circle denotes that there are more shaded shapes touching that circle than unshaded shapes.

The aim is to shade the correct shapes within the field such that all the circles correctly describe their neighboring areas.

Solution methods
White or black circles bordered by one or two shapes result in all bordering shapes being of the type specified by the circle. Once at least half of the bordering shapes on a grey circle are known to be of one type, the other half should also be known.