// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package structs

type S struct {
	X, Y       float64
	unexported bool
}

func (s *S) Sum() float64 {
	return s.X + s.Y
}

func (s *S) Identity() (*S, error) {
	return s, nil
}

func Identity(s *S) *S {
	return s
}

func IdentityWithError(s *S) (*S, error) {
	return s, nil
}

type (
	S2 struct{}
	I  interface {
		M()
	}
)

func (s *S2) M() {
}

func (_ *S2) String() string {
	return ""
}

// Structs is a struct with the same name as its package.
type Structs struct{}

func (_ *Structs) M() {
}
